www.gusucode.com > VC++仿XP免费Prof UIS界面库-源码程序 > VC++仿XP免费Prof UIS界面库-源码程序/code/Samples/ProfUIS_Controls/MainDlg.cpp

    //Download by http://www.NewXing.com
// MainDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ProfUIS_Controls.h"
#include "MainDlg.h"
#include "TabDemoDlg.h"

#include <ExtPopupMenuWnd.h>
#include <ExtPaintManager.h>
#include <exdlgbase.h>

#include <ExtCmdManager.h>

#ifndef __AFXPRIV_H__
	#include <AfxPriv.h>
#endif

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define WM_ICON_NOTIFY (WM_USER+11)
NOTIFYICONDATA g_NotifyIconData;
LPCTSTR g_sFriendlyProgramName = _T("Prof-UIS");

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CExtDlgBase
{
	bool m_bFirstShow;
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	CExtButton	m_BtnOK;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
	virtual void OnOK();
	virtual void OnCancel();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CExtDlgBase(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
	m_bFirstShow = true;
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CExtDlgBase::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	DDX_Control(pDX, IDOK, m_BtnOK);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CExtDlgBase)
	//{{AFX_MSG_MAP(CAboutDlg)
	ON_WM_SHOWWINDOW()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMainDlg dialog

CMainDlg::CMainDlg(CWnd* pParent /*=NULL*/)
	: CExtResizableDialog(CMainDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMainDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	m_bDialogInitComplete = false;
	m_bShowIconInTray = false;
	m_bDialogWithCtxMenu = true;
	m_nThinColorBtnHeight = 8;

	VERIFY( g_PaintManager.InstallPaintManager( RUNTIME_CLASS(CExtPaintManager) ) );
}

void CMainDlg::DoDataExchange(CDataExchange* pDX)
{
	CExtResizableDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMainDlg)
	DDX_Control(pDX, IDC_BUTTON_TAB_DEMO, m_BtnTabDemo);
	DDX_Control(pDX, IDC_SHOW_TAB, m_CheckShowTab);
	DDX_Control(pDX, IDC_TAB1, m_MainTab);
	DDX_Control(pDX, IDC_CHECK_MENU_WITH_SHADOWS, m_CheckMenuWithShadows);
	DDX_Control(pDX, IDC_COMBO_MENU_OPEN_EFFECT, m_ComboMenuEffect);
	DDX_Control(pDX, IDC_CHECK_MENU_ANIM_EXPANDING, m_CheckAnimateMenuWhenExpanding);
	DDX_Control(pDX, IDC_BUTTON_COLOR2, m_btnColor2);
	DDX_Control(pDX, IDC_BUTTON_COLOR1, m_btnColor1);
	DDX_Control(pDX, IDC_BUTTON_WITH_MENU, m_btnWithMenu);
	DDX_Control(pDX, IDC_EDIT_SAMPLE, m_EditSample);
	DDX_Control(pDX, IDC_COMBO_EDITABLE, m_ComboEditable);
	DDX_Control(pDX, IDC_COMBO_UI_LOOK, m_ComboUiLook);
	DDX_Control(pDX, IDC_ENABLE_DIALOG_CONTEXT_MENU, m_CheckEnableContextMenu);
	DDX_Control(pDX, IDC_CHECK_SHOW_IN_TRAY, m_CheckShowIconInTray);
	DDX_Control(pDX, IDCANCEL, m_BtnCancel);
	DDX_Control(pDX, IDOK, m_BtnOK);
	DDX_Control(pDX, IDC_USE_SEPARATED_BUTTONS, m_CheckUseSeparatedBtns );
	DDX_Control(pDX, IDC_USE_BORDER, m_CheckUseBorderBtns );
	DDX_Control(pDX, IDC_USE_FLAT, m_CheckUseFlatBtns );
	//}}AFX_DATA_MAP
	DDX_Control(pDX, IDC_MY_MENUBAR, m_wndMenuBar);
	DDX_Control(pDX, IDC_MY_TOOLBAR_TOP, m_wndToolBarTop);
	DDX_Control(pDX, IDC_MY_TOOLBAR_LEFT, m_wndToolBarLeft);
#if (!defined __EXT_MFC_NO_TAB_CTRL)
	DDX_Control(pDX, ID_EXTTABCTRL, m_wndExtTabCtrl);
#endif // (!defined __EXT_MFC_NO_TAB_CTRL)
}

BEGIN_MESSAGE_MAP(CMainDlg, CExtResizableDialog)
	//{{AFX_MSG_MAP(CMainDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
	ON_WM_CONTEXTMENU()
	ON_CBN_SELENDOK(IDC_COMBO_UI_LOOK, OnSelendokComboUiLook)
	ON_COMMAND(IDC_CHECK_SHOW_IN_TRAY, OnCheckShowInTray)
	ON_COMMAND(IDC_ENABLE_DIALOG_CONTEXT_MENU, OnEnableDialogContextMenu)
	ON_COMMAND(IDC_LOOK_2K, OnLook2k)
	ON_UPDATE_COMMAND_UI(IDC_LOOK_2K, OnUpdateLook2k)
	ON_COMMAND(IDC_LOOK_XP, OnLookXp)
	ON_UPDATE_COMMAND_UI(IDC_LOOK_XP, OnUpdateLookXp)
	ON_COMMAND(ID_VIEW_LIKE_OFFICE_2003, OnLook2003)
	ON_UPDATE_COMMAND_UI(ID_VIEW_LIKE_OFFICE_2003, OnUpdateLook2003)
	ON_BN_CLICKED(IDC_CHECK_MENU_ANIM_EXPANDING, OnCheckMenuAnimExpanding)
	ON_CBN_SELENDOK(IDC_COMBO_MENU_OPEN_EFFECT, OnSelendokComboMenuOpenEffect)
	ON_BN_CLICKED(IDC_CHECK_MENU_WITH_SHADOWS, OnCheckMenuWithShadows)
	ON_WM_DESTROY()
	ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_SHOW_TAB, OnShowTab)
	ON_BN_CLICKED(IDC_BUTTON_TAB_DEMO, OnButtonTabDemo)
	ON_BN_CLICKED(IDC_CHECK_SHOW_IN_TRAY, OnCheckShowInTray)
	ON_WM_SIZE()
	ON_COMMAND(IDC_USE_SEPARATED_BUTTONS, OnUseSeparatedBtns)
	ON_COMMAND(IDC_USE_BORDER, OnUseBorderBtns )
	ON_COMMAND(IDC_USE_FLAT, OnUseFlatBtns )
	//}}AFX_MSG_MAP
	ON_UPDATE_COMMAND_UI(IDC_BUTTON_TAB_DEMO, OnUpdateButtonTabDemo)
	ON_UPDATE_COMMAND_UI(IDC_CHECK_SHOW_IN_TRAY, OnUpdateCheckShowInTray)
	ON_UPDATE_COMMAND_UI(IDC_ENABLE_DIALOG_CONTEXT_MENU, OnUpdateEnableDialogContextMenu)
	ON_MESSAGE(WM_ICON_NOTIFY,OnInconNotify)
	ON_REGISTERED_MESSAGE(CExtPopupMenuWnd::g_nMsgPopupDrawItem,OnDrawPopupMenuItem)
	ON_REGISTERED_MESSAGE(CExtPopupMenuWnd::g_nMsgPopupDrawLeftArea,OnDrawPopupLeftArea)
	ON_REGISTERED_MESSAGE(CExtPopupColorMenuWnd::g_nMsgNotifyColorChangedFinally,OnColorChangedFinally)
	ON_REGISTERED_MESSAGE(CExtPopupColorMenuWnd::g_nMsgNotifyCustColor,OnColorSelectCustom)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMainDlg message handlers

LRESULT CMainDlg::OnInconNotify(WPARAM wParam, LPARAM lParam)
{
	wParam;
	if(WM_ICON_NOTIFY != g_NotifyIconData.uCallbackMessage)
		return 0;
UINT nShellNotifyCode = (UINT)lParam; // LOWORD(lParam);
	if( nShellNotifyCode != WM_RBUTTONUP
		&& nShellNotifyCode != WM_LBUTTONUP
		)
		return 0;
CPoint ptCursorPos;
	VERIFY( ::GetCursorPos( &ptCursorPos ) );
	ShowCtxMenu( ptCursorPos );
	return 1;
}

LRESULT CMainDlg::OnColorSelectCustom(WPARAM wParam, LPARAM lParam)
{
	wParam;
	lParam;
	MessageBox(
		_T("\"Custom color\" button pressed"),
		_T("Color menu event"),
		MB_OK|MB_ICONINFORMATION
		);
	return 0;
}

LRESULT CMainDlg::OnColorChangedFinally(WPARAM wParam, LPARAM lParam)
{
	lParam; // <- is CExtColorButton::m_lParamCookie value
COLORREF clrChanged = (COLORREF)wParam;
COLORREF clr = (COLORREF)wParam;
CString sMsg;
	if( clr == ((COLORREF)(-1)) )
	{
		// if CExtColorButton::m_clrDefault is ((COLORREF)(-1))
		sMsg = _T("\"Default color\" button");
	}
	else
	{
		sMsg.Format(
			_T("red - %d\ngreen - %d\nblue - %d"),
			INT(GetRValue(clrChanged)),
			INT(GetGValue(clrChanged)),
			INT(GetBValue(clrChanged))
			);
	}
	MessageBox(
		LPCTSTR( sMsg ),
		_T("Color chganged"),
		MB_OK|MB_ICONINFORMATION
		);
	return 0;
}

LRESULT CMainDlg::OnDrawPopupLeftArea(WPARAM wParam, LPARAM lParam)
{
	wParam;
CExtPopupMenuWnd::DRAWLEFTAREADATA * pDrawLeftAreaData =
		reinterpret_cast < CExtPopupMenuWnd::DRAWLEFTAREADATA * > ( lParam );
	ASSERT( pDrawLeftAreaData != NULL );

	// get draw DC
CDC & dc = *( (CDC *) *pDrawLeftAreaData );

CRect rcItem = LPCRECT(*pDrawLeftAreaData);
	CExtPaintManager::stat_PaintGradientRect(
		dc,
		&rcItem,
		dc.GetNearestColor( RGB( 0, 0, 0 ) ),
		dc.GetNearestColor( RGB( 0, 0, 196 ) ),
		true
		);

LOGFONT lf;
	::memset(&lf,0,sizeof(LOGFONT));
	g_PaintManager->m_FontNormalVertX.GetLogFont( &lf );
	lf.lfHeight = -18;
	lf.lfWidth = 0;
	lf.lfWeight = 900;
	_tcscpy( lf.lfFaceName, _T("Times New Roman") );
CFont font;
	VERIFY(
		font.CreateFontIndirect(&lf)
		);
CFont * pOldFont = dc.SelectObject( &font );
INT nOldBkMode = dc.SetBkMode( TRANSPARENT );
COLORREF clrOldText = dc.SetTextColor( RGB( 0, 0, 0 ) );

static CString sTitle( _T("Prof-UIS") );
CPoint ptText( rcItem.left+4, rcItem.bottom-5 );
	dc.DrawState(
		ptText, rcItem.Size(), (LPCTSTR)sTitle,
		DSS_NORMAL,  TRUE, 0, (CBrush*)NULL
		);
	dc.SetTextColor( RGB( 255, 255, 255 ) );
	ptText.Offset( -1, -2 );
	dc.DrawState(
		ptText, rcItem.Size(), (LPCTSTR)sTitle,
		DSS_NORMAL,  TRUE, 0, (CBrush*)NULL
		);

const int nIconMetric = 24;
HICON hIcon = (HICON)
		::LoadImage(
			::AfxGetInstanceHandle(),
			MAKEINTRESOURCE(IDI_ICON_FOR_MENU),
			IMAGE_ICON,
			nIconMetric,
			nIconMetric,
			0
			);
	if( hIcon != NULL )
	{
		int nOffset = (rcItem.Width() - nIconMetric) / 2;
		VERIFY(
			::DrawIconEx(
				dc.GetSafeHdc(),
				rcItem.left + nOffset,
				rcItem.top + nOffset,
				hIcon,
				nIconMetric,
				nIconMetric,
				0,
				(HBRUSH)NULL,
				DI_NORMAL
				)
			);
		VERIFY( DestroyIcon( hIcon ) );
	}

	dc.SetBkMode( nOldBkMode );
	dc.SetTextColor( clrOldText );
	dc.SelectObject( pOldFont );

	return !0;
}

LRESULT CMainDlg::OnDrawPopupMenuItem(WPARAM wParam, LPARAM lParam)
{
	wParam;
CExtPopupMenuWnd::DRAWITEMDATA * pDrawItemData =
		reinterpret_cast < CExtPopupMenuWnd::DRAWITEMDATA * > ( lParam );
	ASSERT( pDrawItemData != NULL );
UINT nCmdID = pDrawItemData->GetCmdID();
	if( nCmdID != ID_OWNERDRAW_ITEM )
		return 0; // default painting

	// paint default menu item background
	pDrawItemData->PaintDefaultBk();

	// paint some staff in a little bit rect
CRect rcItem = LPCRECT(*pDrawItemData);
	rcItem.DeflateRect( 10, 1, 10, 4 );

LPCTSTR sItemText = __EXT_MFC_SAFE_LPCTSTR( *pDrawItemData );
INT nItemTextLen = _tcslen( sItemText );

	// get draw DC
CDC & dc = *( (CDC *) *pDrawItemData );

CExtWndShadow _shadow;
	_shadow.Paint(
		dc, rcItem, CRect(0,0,0,0), CRect(0,0,0,0),
		3,
		CExtWndShadow::DEF_BRIGHTNESS_MIN,
		CExtWndShadow::DEF_BRIGHTNESS_MAX,
		false
		);
	CExtPaintManager::stat_PaintGradientRect(
		dc,
		&rcItem,
		dc.GetNearestColor( RGB( 255, 0, 0 ) ),
		dc.GetNearestColor( RGB( 0, 0, 255 ) ),
		false
		);

INT nOldBkMode = dc.SetBkMode( TRANSPARENT );
COLORREF clrOldText = dc.SetTextColor( RGB( 0, 0, 0 ) );
CFont * pOldFont = dc.SelectObject( &g_PaintManager->m_FontBold );

	rcItem.OffsetRect( 2, 1 );
	dc.DrawText(
		sItemText, nItemTextLen, &rcItem, 
		DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_END_ELLIPSIS
		);
	clrOldText = dc.SetTextColor( RGB( 255, 255, 255 ) );
	rcItem.OffsetRect( -2, -1 );
	dc.DrawText(
		sItemText, nItemTextLen, &rcItem, 
		DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_END_ELLIPSIS
		);

	dc.SelectObject( pOldFont );
	dc.SetBkMode( nOldBkMode );
	dc.SetTextColor( clrOldText );
	
	return !0;
}

BOOL CMainDlg::OnInitDialog()
{
	if( !CExtResizableDialog::OnInitDialog() )
	{
		ASSERT( FALSE );
		return FALSE;
	}

	m_btnWithMenu.m_dwMenuOpt |= TPMX_OWNERDRAW_FIXED;
	m_btnColor1.m_nMenuLeftAreaWidth = 30;

CWinApp * pApp = ::AfxGetApp();
	ASSERT( pApp != NULL );

	VERIFY(
		g_CmdManager->ProfileWndAdd(
			pApp->m_pszRegistryKey,
			GetSafeHwnd()
			)
		);

	VERIFY(
		g_CmdManager->UpdateFromMenu(
			pApp->m_pszRegistryKey,
			IDR_MENU3
			)
		);
	VERIFY(
		g_CmdManager->UpdateFromMenu(
			pApp->m_pszRegistryKey,
			IDR_MENU2
			)
		);
	VERIFY(
		g_CmdManager->UpdateFromMenu(
			pApp->m_pszRegistryKey,
			IDR_MENU1
			)
		);
	VERIFY(
		g_CmdManager->UpdateFromToolBar(
			pApp->m_pszRegistryKey,
			IDR_TOOLBAR1
			)
		);

	ASSERT( m_wndMenuBar.GetSafeHwnd() != NULL );
	if(	!m_wndMenuBar.LoadMenuBar( IDR_MENU2 ) )
	{
		ASSERT( FALSE );
		return FALSE;
	}

	ASSERT( m_wndToolBarTop.GetSafeHwnd() != NULL );
	if(	!m_wndToolBarTop.LoadToolBar( IDR_TOOLBAR1 ) )
	{
		ASSERT( FALSE );
		return FALSE;
	}

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_MY_INDICATOR_1,
	ID_MY_INDICATOR_2,
	ID_MY_INDICATOR_3,
};
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		ASSERT( FALSE );
		return FALSE;
	}

	// update some commands in the command manager
CExtCmdItem * pCmdItem = g_CmdManager->CmdGetPtr(
		pApp->m_pszRegistryKey,
		m_BtnTabDemo.GetDlgCtrlID()
		);
	ASSERT( pCmdItem != NULL );
int nTextLen = m_BtnTabDemo.GetWindowTextLength();
	if( nTextLen > 0 )
	{
		m_BtnTabDemo.GetWindowText( (LPTSTR)pCmdItem->m_sMenuText.GetBuffer(nTextLen+1), nTextLen+1 );
		pCmdItem->m_sMenuText.ReleaseBuffer();
		pCmdItem->m_sToolbarText = pCmdItem->m_sMenuText;
	} // if( nTextLen > 0 )

	pCmdItem = g_CmdManager->CmdGetPtr(
		pApp->m_pszRegistryKey,
		IDC_LOOK_2K
		);
	ASSERT( pCmdItem != NULL );
	pCmdItem->m_sToolbarText = pCmdItem->m_sMenuText;

	pCmdItem = g_CmdManager->CmdGetPtr(
		pApp->m_pszRegistryKey,
		IDC_LOOK_XP
		);
	ASSERT( pCmdItem != NULL );
	pCmdItem->m_sToolbarText = pCmdItem->m_sMenuText;

	pCmdItem = g_CmdManager->CmdGetPtr(
		pApp->m_pszRegistryKey,
		ID_VIEW_LIKE_OFFICE_2003
		);
	ASSERT( pCmdItem != NULL );
	pCmdItem->m_sToolbarText = pCmdItem->m_sMenuText;

	// init bitmap label in the menu bar
INT nIdxBmpLabel = m_wndMenuBar.CommandToIndex( ID_BITMAP_LABEL );
	ASSERT( nIdxBmpLabel >= 0 );
	VERIFY(
		m_wndMenuBar.RemoveButton( nIdxBmpLabel, FALSE )
		);
	VERIFY(
		m_wndMenuBar.InsertSpecButton(
			nIdxBmpLabel,
			new
				CBitmapLabelInMenuBar(
					&m_wndMenuBar,
					ID_BITMAP_LABEL,
					IDB_BITMAP2
					),
			FALSE
			)
		);

	// init combobox in the menu bar
	if(	!m_ComboAskQuestion.Create(
			WS_CHILD|WS_VISIBLE
				|CBS_DROPDOWN|CBS_HASSTRINGS,
			CRect( 0, 0, 300, 100 ),
			&m_wndMenuBar,
			ID_COMBO_ASK_QUESTION
			)
		|| !m_wndMenuBar.SetButtonCtrl(
				m_wndMenuBar.CommandToIndex(ID_COMBO_ASK_QUESTION),
				&m_ComboAskQuestion
				)
		)
	{
		ASSERT( FALSE );
		return FALSE;
	}
	m_ComboAskQuestion.SetFont(
		CFont::FromHandle(
			(HFONT)::GetStockObject(DEFAULT_GUI_FONT)
			)
		);
	m_ComboAskQuestion.SetItemHeight(
		-1,
		m_ComboUiLook.GetItemHeight( -1 ) - 1
		);
	m_ComboAskQuestion.AddString( _T("\"ComboBox\" in menu bar") );
	m_ComboAskQuestion.SetCurSel( 0 );

	// init left toolbar buttons
	ASSERT( m_wndToolBarLeft.GetSafeHwnd() != NULL );

	VERIFY(
		m_wndToolBarLeft.InsertButton(
			-1,
			ID_COLOR_BTN_HEIGHT,
			FALSE
			)
		);

CMenu menuWidthCommands;
	VERIFY( menuWidthCommands.LoadMenu(IDR_MENU3) );
	VERIFY(
		m_wndToolBarLeft.SetButtonMenu(
			m_wndToolBarLeft.CommandToIndex(ID_COLOR_BTN_HEIGHT),
			menuWidthCommands.Detach(),
			TRUE,
			TRUE,
			FALSE
			)
		);
	VERIFY(
		m_wndToolBarLeft.InsertButton( -1, ID_SEPARATOR, FALSE )
		);

const int nLeftToolbarGrayscaleButtonsCount = 8;
const int nLeftToolbarColorButtonsCount = 18;

	for( int nGrayscaleBtn = 0; nGrayscaleBtn < nLeftToolbarGrayscaleButtonsCount; nGrayscaleBtn++ )
	{
		VERIFY(
			m_wndToolBarLeft.InsertSpecButton(
				-1,
				new
					CThinColorButtonInToolBar(
						CExtPaintManager::stat_HLStoRGB(
							0.0,
							double(nLeftToolbarGrayscaleButtonsCount - nGrayscaleBtn - 1)
								/ double(nLeftToolbarGrayscaleButtonsCount-1),
							0.0
							),
						&m_wndToolBarLeft
						),
				FALSE
				)
			);
	}
	VERIFY(
		m_wndToolBarLeft.InsertButton( -1, ID_SEPARATOR, FALSE )
		);
	for( int nColorBtn = 0; nColorBtn < nLeftToolbarColorButtonsCount; nColorBtn++ )
	{
		VERIFY(
			m_wndToolBarLeft.InsertSpecButton(
				-1,
				new
					CThinColorButtonInToolBar(
						CExtPaintManager::stat_HLStoRGB(
							double(nColorBtn) / double(nLeftToolbarColorButtonsCount),
							0.5,
							1.0
							),
						&m_wndToolBarLeft
						),
				FALSE
				)
			);
	}
	VERIFY(
		m_wndToolBarLeft.InitContentExpandButton()
		);

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, ID_APP_ABOUT /*IDM_ABOUTBOX*/, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

CMenu _menu;
	VERIFY(
		_menu.LoadMenu(IDR_MENU1)
		);
	m_btnWithMenu.m_menu.Attach(
		_menu.Detach()
		);
HICON hIconForBtn = (HICON)
		::LoadImage(
			::AfxGetInstanceHandle(),
			MAKEINTRESOURCE(IDR_MAINFRAME),
			IMAGE_ICON,
			16,
			16,
			0
			);
	ASSERT( hIconForBtn != NULL );
	m_btnWithMenu.SetIcon( hIconForBtn );

	AddAnchor( IDOK, __RDA_RT );
	AddAnchor( IDCANCEL, __RDA_RT );
	AddAnchor( IDC_COMBO_EDITABLE, __RDA_LT, __RDA_RT );
	AddAnchor( IDC_EDIT_SAMPLE, __RDA_LT, __RDA_RT );
	AddAnchor( IDC_STATIC_BEFORE_MENU, __RDA_LT, __RDA_RT );
	AddAnchor( IDC_COMBO_MENU_OPEN_EFFECT, __RDA_LB, __RDA_RB );
	AddAnchor( IDC_STATIC_BEFORE_MENU, __RDA_LB, __RDA_RB );
	AddAnchor( IDC_STATIC_GRP_BOX, __RDA_LB, __RDA_RB );
	AddAnchor( IDC_TAB1, __RDA_LT, __RDA_RB );
	AddAnchor( IDC_BUTTON_WITH_MENU, CSize(0,0), CSize(33,0) );
	AddAnchor( IDC_BUTTON_COLOR1, CSize(33,0), CSize(66,0) );
	AddAnchor( IDC_BUTTON_COLOR2, CSize(66,0), CSize(100,0) );
	
//	AddAnchor( IDC_CHECK_MENU_ANIM_EXPANDING, CSize(50,100) );
//	AddAnchor( IDC_CHECK_MENU_WITH_SHADOWS, CSize(50,100) );
	AddAnchor( IDC_CHECK_MENU_ANIM_EXPANDING, __RDA_LB, __RDA_RB );
	AddAnchor( IDC_CHECK_MENU_WITH_SHADOWS, __RDA_LB, __RDA_RB );

	AddAnchor( IDC_BUTTON_TAB_DEMO, __RDA_RT );
	
	m_MainTab.InsertItem( 0, _T("Normal") );
	m_MainTab.InsertItem( 1, _T("With image") );
	m_MainTab.InsertItem( 2, _T("White") );

#if (!defined __EXT_MFC_NO_TAB_CTRL)
	ASSERT( m_wndExtTabCtrl.GetSafeHwnd() != NULL );
	m_wndExtTabCtrl.ItemInsert( _T("Normal") );
	m_wndExtTabCtrl.ItemInsert( _T("With image") );
	m_wndExtTabCtrl.ItemInsert( _T("White") );
	m_wndExtTabCtrl.SelectionSet( 0 );
#endif // (!defined __EXT_MFC_NO_TAB_CTRL)

CRect rcWnd, rcPrimaryDesktop;
	GetWindowRect( &rcWnd );
	GetDesktopWindow()->GetClientRect( &rcPrimaryDesktop );
	SetMaxTrackSize( CSize(rcPrimaryDesktop.Width(), rcWnd.Height()) );
	SetMaximizedRect( rcPrimaryDesktop );

	EnableSaveRestore( _T("ExtResizableDialog"), _T("MainDlg") );

	m_ComboUiLook.SetCurSel( 0 );
	m_ComboMenuEffect.SetCurSel( (int)CExtPopupMenuWnd::__AT_FADE );
	m_CheckMenuWithShadows.SetCheck( 1 );
	m_CheckEnableContextMenu.SetCheck( 1 );
	m_CheckAnimateMenuWhenExpanding.SetCheck( CExtPopupMenuWnd::g_bMenuExpandAnimation ? 1 : 0 );
	m_bDialogInitComplete = true;

	PostMessage(WM_COMMAND,IDC_LOOK_2K);


	memset( &g_NotifyIconData, 0, sizeof(NOTIFYICONDATA) );
	g_NotifyIconData.cbSize = sizeof(NOTIFYICONDATA);
	g_NotifyIconData.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;

	g_NotifyIconData.hWnd   = GetSafeHwnd();
	g_NotifyIconData.uCallbackMessage = WM_ICON_NOTIFY;

	g_NotifyIconData.hIcon  = m_hIcon;
		
	// tooltip is 64-1 chars max
	_tcscpy(g_NotifyIconData.szTip,g_sFriendlyProgramName);

	CWnd::RepositionBars(0,0xFFFF,0);

	///SetMinTrackSize( CSize(10,10) );

	m_btnColor1.SetTooltipText( _T("Color Button With Text") );
	m_btnColor2.SetTooltipText( _T("Color Button") );
	m_btnWithMenu.SetTooltipText( _T("Button With Menu") );

	m_BtnTabDemo.SetTooltipText( _T("Show Tab Window Demo Dialog") );
	m_BtnTabDemo.SetBtnCursor( 32649 ); // magic IDC_HELP value
	m_BtnTabDemo.SetFlat();
	
	m_BtnOK.SetTooltipText( _T("\"OK\" Button") );
	m_BtnCancel.SetTooltipText( _T("\"Cancel\" Button") );

	m_CheckUseSeparatedBtns.SetCheck( 0 );
	m_CheckUseBorderBtns.SetCheck( 1 );
	m_CheckUseFlatBtns.SetCheck( 0 );

//	m_btnWithMenu.SetAutoChangeID();
//	m_btnWithMenu.SetAutoChangeCmdIcon();

	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CMainDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CExtResizableDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CMainDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CExtResizableDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CMainDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

BOOL CAboutDlg::OnInitDialog() 
{
	CExtDlgBase::OnInitDialog();

	EnableResizing( false );
	EnableSaveRestore( _T("ExtResizableDialog"), _T("AboutDlg") );
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CAboutDlg::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CExtDlgBase::OnShowWindow(bShow, nStatus);
	
	if( !bShow )
		return;
	if( !m_bFirstShow )
		return;
	m_bFirstShow = false;
}

void CAboutDlg::OnOK() 
{
	CExtDlgBase::OnOK();
}

void CAboutDlg::OnCancel() 
{
	CExtDlgBase::OnCancel();
}

void CMainDlg::OnAppAbout() 
{
CAboutDlg dlgAbout;
	dlgAbout.DoModal();
}

void CMainDlg::ShowCtxMenu(CPoint ptScreen)
{
	if( m_menu.GetSafeHmenu() == NULL )
	{
		if( !m_menu.LoadMenu(IDR_MENU1) )
		{
			ASSERT( FALSE );
			return;
		}
	}
CExtPopupMenuWnd * pPopup = new CExtPopupMenuWnd;
	pPopup->SetLeftAreaWidth( 30 );
	pPopup->UpdateFromMenu(
		GetSafeHwnd(),
		&m_menu
		);

	pPopup->ItemInsert(); // separator
CExtPopupColorMenuWnd * pColorPopup = new CExtPopupColorMenuWnd;
	pPopup->ItemInsertSpecPopup( pColorPopup, -1, _T("Color popup") );
	pColorPopup->m_clrDefault = COLORREF(-1);
	pColorPopup->m_clrInitial = RGB(0,0,0);
	pPopup->ItemSetDisplayed(
		pPopup->ItemGetCount()-1,
		true
		);

	SetForegroundWindow();

	if( !pPopup->TrackPopupMenu(
			TPMX_OWNERDRAW_FIXED,
			ptScreen.x,
			ptScreen.y
			)
		)
		delete pPopup;
}

void CMainDlg::OnContextMenu(CWnd* pWnd, CPoint point) 
{
	pWnd;
	if( m_CheckEnableContextMenu.GetCheck() == 0 )
		return;
	ShowCtxMenu( point );
}

void CMainDlg::OnSelendokComboUiLook() 
{
	if( !m_bDialogInitComplete )
		return;
int nCurStyle = 
		g_PaintManager->IsKindOf(
			RUNTIME_CLASS( CExtPaintManagerOffice2003 )
			)
		? 2 : 0;
	if(		nCurStyle == 0
		&&	g_PaintManager->IsKindOf(
				RUNTIME_CLASS( CExtPaintManagerXP )
				)
		)
		nCurStyle = 1;
int nCurSel = m_ComboUiLook.GetCurSel();
	if( nCurSel == nCurStyle )
		return;
	if(nCurSel == 0)
	{
		VERIFY( g_PaintManager.InstallPaintManager( RUNTIME_CLASS(CExtPaintManager) ) );
	}
	else if(nCurSel == 1)
	{
		VERIFY( g_PaintManager.InstallPaintManager( RUNTIME_CLASS(CExtPaintManagerXP) ) );
	}
	else
	{
		VERIFY( g_PaintManager.InstallPaintManager( RUNTIME_CLASS(CExtPaintManagerOffice2003) ) );
	}
	m_wndMenuBar.SetWindowPos(
		NULL, 0, 0, 0, 0,
		SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_NOOWNERZORDER
			|SWP_FRAMECHANGED
		);
	m_wndToolBarTop.SetWindowPos(
		NULL, 0, 0, 0, 0,
		SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_NOOWNERZORDER
			|SWP_FRAMECHANGED
		);
	m_wndToolBarLeft.SetWindowPos(
		NULL, 0, 0, 0, 0,
		SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_NOOWNERZORDER
			|SWP_FRAMECHANGED
		);
	CWnd::RepositionBars(0,0xFFFF,0);
	RedrawWindow( NULL, NULL,
		RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ERASENOW
			|RDW_ALLCHILDREN
		);
	UpdateDialogControls( this, FALSE );
}

void CMainDlg::OnCheckShowInTray() 
{
	m_bShowIconInTray = !m_bShowIconInTray;
	m_CheckShowIconInTray.SetCheck(
		m_bShowIconInTray ? 1 : 0
		);
/*
BOOL bShell_NotifyIconRetVal =
		Shell_NotifyIcon(NIM_ADD,&g_NotifyIconData);
	ASSERT( bShell_NotifyIconRetVal );
	if( !bShell_NotifyIconRetVal )
		return FALSE;
*/
	if( m_bShowIconInTray )
	{
		VERIFY(
			Shell_NotifyIcon(
				NIM_ADD,
				&g_NotifyIconData
				)
			);
	}
	else
	{
		VERIFY(
			Shell_NotifyIcon(
				NIM_DELETE,
				&g_NotifyIconData
				)
			);
	}
}
void CMainDlg::OnUpdateCheckShowInTray(CCmdUI* pCmdUI)
{
	pCmdUI->Enable();
	pCmdUI->SetCheck( m_bShowIconInTray ? TRUE : FALSE );
}

void CMainDlg::OnEnableDialogContextMenu() 
{
	m_bDialogWithCtxMenu = !m_bDialogWithCtxMenu;
	m_CheckEnableContextMenu.SetCheck(
		m_bDialogWithCtxMenu ? 1 : 0
		);
}
void CMainDlg::OnUpdateEnableDialogContextMenu(CCmdUI* pCmdUI)
{
	pCmdUI->Enable();
	pCmdUI->SetCheck( m_bDialogWithCtxMenu ? TRUE : FALSE );
}


void CMainDlg::OnLook2k() 
{
	m_ComboUiLook.SetCurSel(0);
	OnSelendokComboUiLook();
}
void CMainDlg::OnUpdateLook2k(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable();
INT nCurSel = m_ComboUiLook.GetCurSel();
	pCmdUI->SetRadio(
		( nCurSel == 0 ) ? TRUE : FALSE
		);
}
void CMainDlg::OnLookXp() 
{
	m_ComboUiLook.SetCurSel(1);
	OnSelendokComboUiLook();
}
void CMainDlg::OnUpdateLookXp(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable();
INT nCurSel = m_ComboUiLook.GetCurSel();
	pCmdUI->SetRadio(
		( nCurSel == 1 ) ? TRUE : FALSE
		);
}
void CMainDlg::OnLook2003() 
{
	m_ComboUiLook.SetCurSel(2);
	OnSelendokComboUiLook();
}
void CMainDlg::OnUpdateLook2003(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable();
INT nCurSel = m_ComboUiLook.GetCurSel();
	pCmdUI->SetRadio(
		( nCurSel == 2 ) ? TRUE : FALSE
		);
}

void CMainDlg::OnUseSeparatedBtns()
{
BOOL bUseSep = m_CheckUseSeparatedBtns.GetCheck() ? TRUE : FALSE;
	m_btnColor1.SetSeparatedDropDown( bUseSep );
	m_btnColor2.SetSeparatedDropDown( bUseSep );
	m_btnWithMenu.SetSeparatedDropDown( bUseSep );
}

void CMainDlg::OnUseBorderBtns()
{
BOOL bUseBorder = m_CheckUseBorderBtns.GetCheck() ? TRUE : FALSE;
	m_btnColor1.SetDrawBorder( bUseBorder );
	m_btnColor2.SetDrawBorder( bUseBorder );
	m_btnWithMenu.SetDrawBorder( bUseBorder );
}

void CMainDlg::OnUseFlatBtns()
{
BOOL bUseFlat = m_CheckUseFlatBtns.GetCheck() ? TRUE : FALSE;
	m_btnColor1.SetFlat( bUseFlat );
	m_btnColor2.SetFlat( bUseFlat );
	m_btnWithMenu.SetFlat( bUseFlat );
}

void CMainDlg::OnCheckMenuAnimExpanding() 
{
	CExtPopupMenuWnd::g_bMenuExpandAnimation =
		m_CheckAnimateMenuWhenExpanding.GetCheck() ?
			true : false;
}

void CMainDlg::OnSelendokComboMenuOpenEffect() 
{
	if( !m_bDialogInitComplete )
		return;
int nCurSel = m_ComboMenuEffect.GetCurSel();
	CExtPopupMenuWnd::g_DefAnimationType =
		(CExtPopupMenuWnd::e_animation_type_t)nCurSel;
}

void CMainDlg::OnCheckMenuWithShadows() 
{
	CExtPopupMenuWnd::g_bMenuWithShadows =
		m_CheckMenuWithShadows.GetCheck() ?
			true : false;
}

void CMainDlg::OnDestroy() 
{
	if( m_bShowIconInTray )
	{
		VERIFY(
			Shell_NotifyIcon(
				NIM_DELETE,
				&g_NotifyIconData
				)
			);
	}	

	VERIFY(
		g_CmdManager->ProfileWndRemove(
			GetSafeHwnd()
			)
		);

	CExtResizableDialog::OnDestroy();
}

void CMainDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	pNMHDR;
	*pResult = 0;
	
#if (!defined __EXT_MFC_NO_TAB_CTRL)
INT nCurSel = m_MainTab.GetCurSel();
	if( m_wndExtTabCtrl.SelectionGet() != nCurSel )
	{
		m_wndExtTabCtrl.SelectionSet(
			nCurSel,
			true,
			true
			);
		RedrawWindow();
	}
#else
		RedrawWindow();
#endif // else from (!defined __EXT_MFC_NO_TAB_CTRL)
}

void CMainDlg::OnShowTab() 
{
BOOL bShow = m_CheckShowTab.GetCheck() ? TRUE : FALSE;
	m_MainTab.ShowWindow( bShow );
}

void CMainDlg::OnUpdateButtonTabDemo(CCmdUI* pCmdUI)
{
#if (!defined __EXT_MFC_NO_TAB_CTRL)
	pCmdUI->Enable( TRUE );
#else
	pCmdUI->Enable( FALSE );
#endif // else from (!defined __EXT_MFC_NO_TAB_CTRL)
}

void CMainDlg::OnButtonTabDemo() 
{
#if (!defined __EXT_MFC_NO_TAB_CTRL)
CTabDemoDlg dlg( this );
	dlg.DoModal();
#endif // (!defined __EXT_MFC_NO_TAB_CTRL)
}

void CMainDlg::OnSize(UINT nType, int cx, int cy) 
{
	CExtResizableDialog::OnSize(nType, cx, cy);

	if( nType != SIZE_MINIMIZED )
		CWnd::RepositionBars(0,0xFFFF,0);
	
}

BOOL CMainDlg::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
{
	if(		nCode == CN_UPDATE_COMMAND_UI
		||	nCode == CN_COMMAND
		)
	{
		if( nID == ID_BITMAP_LABEL )
		{
			if( nCode == CN_UPDATE_COMMAND_UI )
			{
				CCmdUI * pCmdUI = (CCmdUI *)pExtra;
				ASSERT( pCmdUI != NULL );
				pCmdUI->Enable();
			}
			else
			{
static bool bMessageBoxWasDisplayed = false;
				if( !bMessageBoxWasDisplayed )
				{
					bMessageBoxWasDisplayed = true;
					::AfxMessageBox( _T("Bitmap label transparency has been changed") );
				}
			}
			return TRUE;
		}

		if( nID == ID_COMBO_ASK_QUESTION )
		{
			if( nCode == CN_UPDATE_COMMAND_UI )
			{
				CCmdUI * pCmdUI = (CCmdUI *)pExtra;
				ASSERT( pCmdUI != NULL );
				pCmdUI->Enable();
			}
			else
			{
				::AfxMessageBox( _T("\"ComboBox\" command in the menubar") );
			}
			return TRUE;
		}

		if( m_wndToolBarLeft.GetSafeHwnd() != NULL )
		{
			INT nBtnHeight = 0;
			switch( nID )
			{
			case ID_HEIGHT_8PX: nBtnHeight = 8; break;
			case ID_HEIGHT_10PX: nBtnHeight = 10; break;
			case ID_HEIGHT_12PX: nBtnHeight = 12; break;
			case ID_HEIGHT_14PX: nBtnHeight = 14; break;
			case ID_HEIGHT_16PX: nBtnHeight = 16; break;
			case ID_HEIGHT_18PX: nBtnHeight = 18; break;
			case ID_HEIGHT_20PX: nBtnHeight = 20; break;
			case ID_HEIGHT_22PX: nBtnHeight = 22; break;
			case ID_HEIGHT_24PX: nBtnHeight = 24; break;
			case ID_HEIGHT_26PX: nBtnHeight = 26; break;
			case ID_HEIGHT_28PX: nBtnHeight = 28; break;
			case ID_HEIGHT_30PX: nBtnHeight = 30; break;
			} // switch( nID )

			if( nBtnHeight != 0 )
			{
				if( nCode == CN_UPDATE_COMMAND_UI )
				{
					CCmdUI * pCmdUI = (CCmdUI *)pExtra;
					ASSERT( pCmdUI != NULL );
					pCmdUI->Enable();
					pCmdUI->SetRadio(
						(m_nThinColorBtnHeight == nBtnHeight) ? TRUE : FALSE
						);
				}
				else
				{
					if( m_nThinColorBtnHeight != nBtnHeight  )
					{
						m_nThinColorBtnHeight = nBtnHeight;
						CWnd::RepositionBars(0,0xFFFF,0);
						m_wndToolBarLeft.RedrawWindow();
					}
				}
				return TRUE;
			}

			INT nColorCmdIndex =
				m_wndToolBarLeft.CommandToIndex( nID );
			if( nColorCmdIndex >= 0 )
			{
				if( nCode == CN_UPDATE_COMMAND_UI )
				{
					CCmdUI * pCmdUI = (CCmdUI *)pExtra;
					ASSERT( pCmdUI != NULL );
					pCmdUI->Enable();
				}
				else
				{
					CWinApp * pApp = ::AfxGetApp();
					ASSERT( pApp != NULL );
					CExtCmdItem * pCmdItem =
						g_CmdManager->CmdGetPtr(
							pApp->m_pszRegistryKey,
							nID
							);
					ASSERT( pCmdItem != NULL );
					CString sMsg;
					sMsg.Format(
						_T("Command from the left toolbar:\n\n%s"),
						pCmdItem->m_sMenuText
						);
					::AfxMessageBox( LPCTSTR(sMsg) );
				}
				return TRUE;
			}
		}
	}
	
	return CExtResizableDialog::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}

LRESULT CMainDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	
LRESULT lResult =
		CExtResizableDialog::WindowProc(message, wParam, lParam);
	if( message == WM_SETMESSAGESTRING )
	{
		CString strMessage;
		if( !strMessage.LoadString( (UINT)wParam ) )
		{
			if( !strMessage.LoadString( (UINT)AFX_IDS_IDLEMESSAGE ) )
				strMessage = _T("");
		}
		if( !strMessage.IsEmpty() )
		{
			LPTSTR pSlashN = _tcschr( strMessage, _T('\n') );
			if( pSlashN != NULL )
				*pSlashN = _T('\0');
		}
		m_wndStatusBar.SetPaneText( 0, strMessage );
		return 0L;
	}

	if( message >= WM_CTLCOLORMSGBOX && message <= WM_CTLCOLORSTATIC )
	{
		switch( m_MainTab.GetCurSel() )
		{
		case 1:
		{
			HDC hDC =
				__EXT_GET_WM_CTLCOLOR_HDC(wParam,lParam,message);
			::SetBkMode( hDC, TRANSPARENT );
			static CBrush _brImage;
			if( _brImage.GetSafeHandle() != NULL )
				return (LRESULT)_brImage.GetSafeHandle();
			CBitmap bmp;
			VERIFY( bmp.LoadBitmap(IDB_BITMAP1) );
			VERIFY( _brImage.CreatePatternBrush(&bmp) );;
			return (LRESULT)_brImage.GetSafeHandle();
		} // if( m_MainTab.GetCurSel() == 1 )
		break;
		case 2:
		{
			HDC hDC =
				__EXT_GET_WM_CTLCOLOR_HDC(wParam,lParam,message);
			::SetBkMode( hDC, TRANSPARENT );
			return (LRESULT)::GetStockObject( WHITE_BRUSH );
		}
		break;
		} // switch( m_MainTab.GetCurSel() )
		return lResult;
	} // if( message >= WM_CTLCOLORMSGBOX && message <= WM_CTLCOLORSTATIC )

	return lResult;
}